package com.huashi.dealer.modular.business.upload.param;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * API上传响应参数
 *
 * @author 谭陈强
 * @since 2025-07-30
 */
@Data
@Schema(description = "API上传响应参数")
public class UploadResponseParam {

    @Schema(description = "文件ID")
    private Long fileId;

    @Schema(description = "文件路径")
    private String filePath;

    @Schema(description = "文件URL")
    private String fileUrl;

    @Schema(description = "文件名称")
    private String fileName;

    @Schema(description = "文件类型")
    private String fileType;

    @Schema(description = "文件大小")
    private Long fileSize;

    @Schema(description = "存储方式")
    private String storage;

    @Schema(description = "分组ID")
    private Long groupId;

    @Schema(description = "文件状态")
    private Integer fileStatus;

    @Schema(description = "创建时间")
    private Long createTime;

    @Schema(description = "更新时间")
    private Long updateTime;

    @Schema(description = "文件列表")
    private List<FileInfo> fileList;

    @Schema(description = "文件信息")
    private FileInfo fileInfo;

    @Schema(description = "文件是否存在")
    private Boolean fileExists;

    @Schema(description = "上传成功数量")
    private Integer successCount;

    @Schema(description = "上传失败数量")
    private Integer failCount;

    @Schema(description = "总数")
    private Long total;

    @Data
    @Schema(description = "文件信息")
    public static class FileInfo {
        @Schema(description = "文件ID")
        private Long fileId;

        @Schema(description = "文件路径")
        private String filePath;

        @Schema(description = "文件URL")
        private String fileUrl;

        @Schema(description = "文件名称")
        private String fileName;

        @Schema(description = "文件类型")
        private String fileType;

        @Schema(description = "文件大小")
        private Long fileSize;

        @Schema(description = "存储方式")
        private String storage;

        @Schema(description = "分组ID")
        private Long groupId;

        @Schema(description = "文件状态")
        private Integer fileStatus;

        @Schema(description = "创建时间")
        private Long createTime;

        @Schema(description = "更新时间")
        private Long updateTime;
    }
} 